#pragma once
#include <QObject>
#include <QString>
#include <QNetworkAccessManager>// 网络访问管理器，发送HTTP请求到百度语音识别API

class BaiduASR : public QObject {
    Q_OBJECT
public:
    explicit BaiduASR(const QString &apiKey, const QString &secretKey, QObject *parent = nullptr);
    ~BaiduASR();
    void recognizeFromFile(const QString &filePath);  // 从文件识别

signals:
    void recognitionFinished(const QString &text);  // 识别完成信号
    void recognitionError(const QString &error);    // 识别错误信号

private:
    void requestAndSetAccessToken();// 根据APIkey和secretkey获取Token
    void sendAudioForRecognition(const QByteArray &audioData);// 发送识别文件
    void onRecognitionResponse(QNetworkReply* reply);// 处理识别结果
    QString generateDeviceId() const;

    QString m_apiKey;// 存储BaiduASR的APIkey
    QString m_secretKey;// 存储BaiduASR的secretkey
    QString m_accessToken;// 从百度API服务器获取的访问令牌(Access Token)
    QNetworkAccessManager *m_networkManager;// 网络管理器，负责所有HTTP请求的发送和接收
};